package com.raymond.cmpp.msg.request;

import com.raymond.client.constants.GlobalConstants;
import com.raymond.client.msg.AbstractMessage;
import com.raymond.cmpp.enums.CommandIdType;

/**
 * 短信提交请求
 *
 * @author :  raymond
 * @version :  V1.0
 * @date :  2021-08-05 16:05
 */
public class SubmitRequestMessage extends AbstractMessage {
    /** 信息标识 **/
    private long msgId;
    /** 是否要求返回状态确认报告：0：不需要；1：需要。 **/
    private short registeredDelivery = 0;
    /** 信息级别。 **/
    private short msgLevel = 1;
    /** 业务标识，是数字、字母和符号的组合。 **/
    private String serviceId = GlobalConstants.EMPTY_STRING;
    /** 计费用户类型字段：0：对目的终端MSISDN计费；1：对源终端MSISDN计费；
     * 2：对SP计费；3：表示本字段无效，对谁计费参见Fee_terminal_Id字段。 **/
    private short feeUserType = 2;
    /** 被计费用户的号码，当Fee_UserType为3时该值有效，当Fee_UserType为0、1、2时该值无意义。 **/
    private String feeTerminalId = GlobalConstants.EMPTY_STRING;
    /** 被计费用户的号码类型，0：真实号码；1：伪码。 **/
    private short feeTerminalType = 0;
    /** 信息内容来源(SP_Id)。 **/
    private String msgSrc = GlobalConstants.EMPTY_STRING;
    /** 资费类别：
     01：对“计费用户号码”免费；
     02：对“计费用户号码”按条计信息费；
     03：对“计费用户号码”按包月收取信息费。 **/
    private String feeType = "01";
    /** 资费（以分为单位）。 **/
    private String feeCode = "000000";
    /** 存活有效期，格式遵循SMPP3.3协议。 **/
    private String valIdTime = GlobalConstants.EMPTY_STRING;
    /** 定时发送时间，格式遵循SMPP3.3协议。 **/
    private String atTime = GlobalConstants.EMPTY_STRING;
    /** 源号码。SP的服务代码或前缀为服务代码的长号码,
     * 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段，该号码最终在用户手机上显示为短消息的主叫号码。 **/
    private String srcId = GlobalConstants.EMPTY_STRING;
    /** 接收信息的用户数量(小于100个用户)。接收短信的MSISDN号码。 **/
    private String[] destTerminalId;
    /** 接收短信的用户的号码类型，0：真实号码；1：伪码。 **/
    private short destTerminalType = 0;
    /** 点播业务使用的LinkID，非点播类业务的MT流程不使用该字段。 **/
    private String linkId = GlobalConstants.EMPTY_STRING;
    /** 保留。 **/
    private String reserve = GlobalConstants.EMPTY_STRING;
    /** 信息内容。 **/
    private String msgContent;
    /** 相同Msg_Id的信息总条数，从1开始 **/
    private short pkTotal = 1;
    /** 相同Msg_Id的信息序号，从1开始。 **/
    private short pkNumber = 1;
    /** GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9。 **/
    private short tpPid = 0;
    /** GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位，右对齐。 **/
    private short tpUdhi = 0;
    /** 信息格式：0：ASCII串；3：短信写卡操作；4：二进制信息；8：UCS2编码；15：含GB汉字。。。。。。 **/
    private short msgFmt = 0;
    /** 信息长度(Msg_Fmt值为0时：<160个字节；其它<=140个字节)，取值大于或等于0。 **/
    private short msgLength = 140;


    public SubmitRequestMessage(int sequenceId) {
        super(sequenceId);
    }

    @Override
    public int getCommandId() {
        return CommandIdType.SUBMIT_REQUEST.getCommandId();
    }

    public long getMsgId() {
        return msgId;
    }

    public void setMsgId(long msgId) {
        this.msgId = msgId;
    }

    public short getRegisteredDelivery() {
        return registeredDelivery;
    }

    public void setRegisteredDelivery(short registeredDelivery) {
        this.registeredDelivery = registeredDelivery;
    }

    public short getMsgLevel() {
        return msgLevel;
    }

    public void setMsgLevel(short msgLevel) {
        this.msgLevel = msgLevel;
    }

    public String getServiceId() {
        return serviceId;
    }

    public void setServiceId(String serviceId) {
        this.serviceId = serviceId;
    }

    public short getFeeUserType() {
        return feeUserType;
    }

    public void setFeeUserType(short feeUserType) {
        this.feeUserType = feeUserType;
    }

    public String getFeeTerminalId() {
        return feeTerminalId;
    }

    public void setFeeTerminalId(String feeTerminalId) {
        this.feeTerminalId = feeTerminalId;
    }

    public short getFeeTerminalType() {
        return feeTerminalType;
    }

    public void setFeeTerminalType(short feeTerminalType) {
        this.feeTerminalType = feeTerminalType;
    }

    public String getMsgSrc() {
        return msgSrc;
    }

    public void setMsgSrc(String msgSrc) {
        this.msgSrc = msgSrc;
    }

    public String getFeeType() {
        return feeType;
    }

    public void setFeeType(String feeType) {
        this.feeType = feeType;
    }

    public String getFeeCode() {
        return feeCode;
    }

    public void setFeeCode(String feeCode) {
        this.feeCode = feeCode;
    }

    public String getValIdTime() {
        return valIdTime;
    }

    public void setValIdTime(String valIdTime) {
        this.valIdTime = valIdTime;
    }

    public String getAtTime() {
        return atTime;
    }

    public void setAtTime(String atTime) {
        this.atTime = atTime;
    }

    public String getSrcId() {
        return srcId;
    }

    public void setSrcId(String srcId) {
        this.srcId = srcId;
    }

    public String[] getDestTerminalId() {
        return destTerminalId;
    }

    public void setDestTerminalId(String[] destTerminalId) {
        this.destTerminalId = destTerminalId;
    }

    public short getDestTerminalType() {
        return destTerminalType;
    }

    public void setDestTerminalType(short destTerminalType) {
        this.destTerminalType = destTerminalType;
    }

    public String getLinkId() {
        return linkId;
    }

    public void setLinkId(String linkId) {
        this.linkId = linkId;
    }

    public String getReserve() {
        return reserve;
    }

    public void setReserve(String reserve) {
        this.reserve = reserve;
    }

    public String getMsgContent() {
        return msgContent;
    }

    public void setMsgContent(String msgContent) {
        this.msgContent = msgContent;
    }

    public short getPkTotal() {
        return pkTotal;
    }

    public void setPkTotal(short pkTotal) {
        this.pkTotal = pkTotal;
    }

    public short getPkNumber() {
        return pkNumber;
    }

    public void setPkNumber(short pkNumber) {
        this.pkNumber = pkNumber;
    }

    public short getTpPid() {
        return tpPid;
    }

    public void setTpPid(short tpPid) {
        this.tpPid = tpPid;
    }

    public short getTpUdhi() {
        return tpUdhi;
    }

    public void setTpUdhi(short tpUdhi) {
        this.tpUdhi = tpUdhi;
    }

    public short getMsgFmt() {
        return msgFmt;
    }

    public void setMsgFmt(short msgFmt) {
        this.msgFmt = msgFmt;
    }

    public short getMsgLength() {
        return msgLength;
    }

    public void setMsgLength(short msgLength) {
        this.msgLength = msgLength;
    }
}
